home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PLUS4 / plus4disk2.d64 / ch7.04 relat < prev    next >
Text File  |  2009-01-03  |  9KB  |  89 lines

  1. Ç*NB"1:CH7.04  RELAT"
  2. Ç*SP0:LM8:RM62:PL66:PG59
  3. Ç*VP3:HL8:HR72:HD0:├16/+4: ╥┼╠┴╘╔╓┼ ╞╔╠┼               ,,╙ECTION XX
  4. Ç*HS2:------------------------------------,,----------
  5. Ç*FT0:-----------------------,,----------
  6. Ç*FS3:(C) 1984 ┼LIZABETH ─EAL,,         Ç#
  7. ╙ECTION
  8. Ç*LN2:CN1;╥┼╠┴╘╔╓┼ ╞╔╠┼╙         Ç*LN2:CN0
  9.      ┴ WAY TO FILE RELATIVES? ╬OT QUITE. ╘HIS SECTION IS A SCHEMATIC FOR LEARNING RELATIVE FILING SCHEME. ╘HE SUBJECT IS RATHER VAST, WE WILL GLOSS OVER IT, JUST ENOUGH TO GIVE YOU SOME SOLID BACKGROUND.
  10.  
  11.      ╘HE ENTIRE SECTION IS A PROJECT. ╔TS SOLE PURPOSE IS TO OBSERVE WHAT THE DISK AND THE COMPUTER ARE DOING. ╘APE CANNOT BE USED FOR RELATIVE FILES, HENCE, THIS SECTION CANNOT BE USED BY TAPE PEOPLE.
  12.  
  13.      ╥ELATIVE FILES DIFFER FROM SEQUENTIAL FILES IN FOUR MAJOR WAYS:
  14.  
  15.      (1)  ┴NY RECORD CAN BE ACCESSED FOR BOTH READING AND WRITING WITHOUT HAVING TO ACCESS ANY PREVIOUS RECORDS
  16.  
  17.      (2)  ╧NE ╨╥╔╬╘ STATEMENT PRINTS ONE RECORD, THE NEXT ╨╥╔╬╘ STATEMENT, WHETHER YOU LIKE IT OR NOT, PRINTS THE NEXT RECORD. ╘HERE ARE MANY WAYS TO HANDLE THAT FEATURE, THE ONE PROPOSED BELOW IS JUST ONE OF THE WAYS.
  18.  
  19.      (3)  ╘HERE IS NO SUCH THING AS AN UNCLOSED (ASTERISK) RELATIVE FILE IN THE DIRECTORY. ╔F YOU DON'T ├╠╧╙┼ IT, YOU DON'T FINISH  WRITING IT. ╔T WILL BE INCOMPLETE, BUT IT IS ALWAYS CLOSED FROM THE DISK'S POINT OF VIEW.
  20.  
  21.      (4)  ╘HE ╧╨┼╬ING SEQUENCE IS DIFFERENT FIRST TIME AROUND FROM ALL THE OTHER TIMES.
  22.  
  23. // PRG: RELATIVE DEMO //
  24.  
  25.      ╘HIS IS A FAIRLY LONG DEMO, BUT TRY TO TYPE IT IN AS CAREFULLY AS YOU CAN. ╫ATCH ALL THE SEMICOLONS AND COMMAS AS THEY ARE VERY IMPORTANT.
  26.  
  27. ***  ╧╨┼╬ ╔╘  ***
  28.  
  29.      ╘HE OPENING SEQUENCE IS RUN ONLY ONCE PER FILE: LINES 170-180  BUILD A FRAMEWORK FOR TEN RECORDS, EACH RECORD IS UP TO 25 CHARACTERS LONG. ╧NCE THAT RECORD LENGTH REGISTERS IN THE DISK'S MIND, THERE IS NO CHANGING. ╘HAT'S WHAT SETS THIS FILE APART FROM THE OTHERS, THAT'S WHAT TELLS THE DISK IT'S A RELATIVE FILE. ╘HE FRAMEWORK IS BUILT IN AN INTERESTING WAY: WE TELL THE DISK TO FORMAT 10 RECORDS BY ASKING TO PRINT TO A NONEXISTENT RECORD NUMBER 10. ╘HE DISKS SAYS TO ITSELF, "GEE, ╔ HAVEN' ANY RECORDS HERE, ╔ BETTER BUILD ALL 10", AND DOES JUST THAT.
  30.  
  31.      ╘HE SUBSEQUENT OPENING SEQUENCE IS IN LINE 170. ╒SE THAT LINE ONCE THE FILE HAS BEEN CREATED.
  32.  
  33. ***  ╙┼╬─ ┴╬─ ╥┼├┼╔╓┼ ─┴╘┴  ***
  34.  
  35.      ╠INES 220-230 ╫╥╔╘┼ RECORDS 5 TO 9 USING DATA IN LINE 610 (OF COURSE ANY KIND OF ─┴╘┴ CAN BE USED, THIS IS FOR SIMPLICITY). ╘HEN WE ╥┼┴─ RECORDS 6 TO 10, BACKWARDS. ╫ATCH THE SCREEN, RECORD 10 HASN'T BEEN FILLED WITH DATA, IT SHOWS THE INITIALIZATION CHARACTER, A PI-CHARACTER OR A CROSSHATCH GRAPHIC, THAT'S THE ├╚╥$(255) WE WROTE EARLIER. ╔T TELLS US A RECORD IS ALLOCATED, BUT EMPTY.
  36.  
  37.      ╬OTE THE SYNTAX OF WRITING. ┴ WHOLE RECORD IS BUILT IN MEMORY JUST ONCE, THE CARRIAGE RETURNS ARE FORCED INTO ONE LONG CHARACTER STRING. ╘HE POINT IS THAT WE ├┴╬╬╧╘ CODE: ╨╥╔╬╘#4,┴$:╨╥╔╬╘#4,┬$:╨╥╔╬╘#4,├$ AND SO ON, AS IN RELATIVE FILES THIS WOULD WRITE TO 3 DIFFERENT RECORDS AND YOU'D WANDER WHY YOUR FILE IS THREE TIMES AS LONG AS YOU THOUGHT IT WOULD BE AND WHY YOU CAN'T READ ALL THE FIELDS YOU THOUGHT YOU SENT TO DISK ... A TRAP GALORE!
  38.  
  39.      ╠INE 240 SIMPLY PICKS UP THE SAME OLD DATA, THEN IT ╥┼╫╥╔╘┼╙ (JARGON WORD: UPDATE) AND ╥┼╥┼┴─╙ RECORD NUMBER 6 TO SHOW THAT IT CAN BE DONE.
  40.  
  41.      ╠INE 250 REQUESTS ╫╥╔╘╔╬╟ DATA TO RECORD 30. ╔T DOES NOT EXIST. ╫ATCH THE SCREEN. ╘HE ERROR MESSAGE (NUMBER 50) IS YUR CLUE. ╘HE DISK AUTOMATICALLY EXPANDS THE FILE UP TO RECORD 30.  ┴LL RECORDS FROM 11 TO 30 NOW GET THE ├╚╥$(255), AS HAPPENED IN THE INITIAL OPENING.
  42.  
  43.      ╠INE 260 REQUESTS ╥┼┴─╔╬╟ RECORD NUMBER 90. ┴ WHOLE DIFFERENT BALLGAME. ╫E CANNOT READ THIS RECORD, IT HAS NEVER BEEN ALLOCATED, THE COMPUTER MAY CRASH IF YOU PERMIT READING. ╘HE ERROR MESSAGE NUMBER 50 IN A READ-SITUATION CANNOT BE IGNORED, WE TEST FOR IT AND KILL THE PROJECT.
  44.  
  45. ***  ╨╧╙╔╘╔╧╬╔╬╟ ╘╧ ┴╬┘ ╥┼├╧╥─  ***
  46.  
  47.      ╚OW DOES THE DISK KNOW WHICH RECORD TO WRITE? ╠INE 510 PRONOUNCES THE MAGIC WORDS. ╘AKE THE RECORD NUMBER, DIVIDE IT INTO ITS LOW AND HIGH BYTES (EXAMPLE: RECORD 2049 - LOW BYTE 1, HIGH BYTE 8; CHECK: 1+256*8=2049) AND SEND IT TO THE COMMAND CHANNEL OF THE DISK (CHANNEL 15, SAME AS THE ERROR CHANNEL) VIA A SUBROUTINE IN LINE 560. ╫E SEND A LETTER ╨, SECONDARY ADDRESS, THE RECORD NUMBER (CODED AS THE TWO BYTES), AND A VALUE FOR THE STARTING POSITION WITHIN A RECORD. ┘ES, YOU CAN POSITION TO PLACES OTHER THAN 1, WE USE ONLY 1, AS IT AVOIDS LOTS OF CONFUSION.
  48.  
  49.      ╧NCE THE DISK'S COMMAND CHANNEL HAS POSITIONED TO A RECORD, WE CAN NOW ╫╥╔╘┼ THE DATA TO A DATA CHANNEL (╙┴) ASSOCIATED WITH THE RELATIVE FILE; IN OUR CASE THE FILE NUMBER IS 4, THE DATA CHANNEL IS ALSO 4, AS CODED IN ╙┴ IN THE ╧╨┼╬ 4,─╓,╙┴ STATEMENT. ╔T'S VITAL THAT YOU UNDERSTAND THIS TWO-STEP PROCESS, SO LET'S SUMMARIZE:
  50.  
  51. 1. ╫E SEND THE RECORD NUMBER DOWN THE COMMAND CHANNEL, AND WHEN ALL IS WELL ON THAT ROUTE, THEN AND ONLY THEN 
  52. 2. ╫E SEND THE DATA TO THE FILE VIA A DATA CHANNEL
  53.  
  54. ╘HE DISKS SORTS ITS ALL OUT AND YOU END UP WITH A TERRIFIC FILING SYSTEM.
  55.  
  56. ***  ╙╧═┼ ╥┼╙╒╠╘╙  ***
  57.  
  58.      ╘HE ILLUSTRATION SHOWS WHAT THE SCREENS SAID DURING THE PROCESS.
  59.  
  60. // PIC: REL-A //
  61.  
  62.      ╧NCE YOU GET THIS FAR, CHANGE WHAT GETS PRINTED (LINE 610) AND RUN THE SAME PROGRAM  (PUT ╥┼═S ON LINES 170-180). ╘HE SCREEN WILL INFORM YOU OF REWRITING. ╘HE POINT HERE IS TO SHOW THAT WE CAN CATCH WHETHER A RECORD ALREADY HAS DATA IN IT (LINES 630-640 CHECK IF THE FIRST BYTE IS ├╚╥$(255) OR OTHER CHARACTER, 255 INDICATES A FREE RECORD, OTHER CHARACTERS INDICATE A RECORD IS ALREADY USED). ╔N A REAL SITUATION YOU WOULD HAVE TO ASK YOURSELF A QUESTION: THIS RECORD IS ALREADY FILLED, DO ╔ WANT TO REWRITE IT OR SHOULD ╔ LEAVE IT ALONE?
  63.  
  64.      ╚ERE IS AN ILLUSTRATION OF A SECOND RUN USING AN EQUALS SIGN AS A MARKER BEFORE THE NUMBER IN LINE 610.
  65.  
  66. // PIC: REL-B //
  67.  
  68.      ╘HE SUBROUTINES IN THE PROGRAM ARE DOCUMENTED. ╫HILE THIS PROGRAM IS A SCHEMATIC, IT HAS JUST ABOUT ALL THE FEATURES THAT ONE NEEDS FOR USING RELATIVE FILES: IT BUILDS THE INITIAL FILE, IT CAN EXPAND IT, IT CAN WRITE IT, IT CAN UPDATE (REWRITE) PARTICULAR RECORDS AFTER DETECTING WHETHER A RECORD IS FULL OR NOT, IT CAN READ ANY RECORD, WHILE DETECTING A RECORD OUT OF RANGE, WHICH CANNOT AND SHOULD NOT BE READ.
  69.  
  70. ***  ╨┼╥╙╨┼├╘╔╓┼  ***
  71.  
  72.      ╘HIS IS NOT A FILING PROGRAM, NOR A DATA BASE. ╔T IS INCLUDED HERE AS A PROJECT FOR PLAYING WITH. ╘HE KEY REASON BEING THAT MOST BOOKS ON THE MARKET IGNORE THE SUBJECT ALTOGETHER, THE ├OMMODORE MANUAL ISN' VERY CLEAR ABOUT IT, AND PEOPLE ARE SCARED OF RELATIVE FILES MORE THAN NEEDED. ┴LL IT TAKES IS A BIT OF EXPERIMENTATION AND YOU'LL BE ON YOUR WAY TO SET UP SOME REAL RELATIVE FILES.
  73.  
  74. ***  ╞╒╬├╘╔╧╬ ╧╞ ╘╚┼ ├╧══┴╬─ ├╚┴╬╬┼╠ ***
  75.  
  76.      ╚OPEFULLY, YOU NOW UNDERSTAND THE NEW FUNCTION OF THE ERROR CHANNEL. ╔N RELATIVE FILES, MORE THAN IN ANY OTHER WORKINGS WITH THE DISK, THE COMMAND/ERROR CHANNEL IS WORKING TOGETHER WITH US. ╔T NOT ONLY DETECTS ERRORS, BUT IT HELPS US MAKE DECISION AS TO WHAT WE CAN OR CANNOT DO. ╘HIS IS A SOPHISTICATED SYSTEM, AND AN INTERESTING ONE TO WATCH. ╔T SHOWS THE DISK AT ITS BEST!
  77.  
  78.      ╘HE DISK MANUAL IS INCOMPLETE. ┬UT IT DOES CONTAIN MOST OF THE INFORMATIONS THERE. ╘O STUDY MORE, LOOK IN THE LIST OF DISK ERRORS FOR ALL ERRORS WITH NUMBERS IN THE FIFTIES, THEY BELONG TO RELATIVE FILES. ╬OTE THAT WE HAVEN'T COVERED ALL OF THEM. ┘OU COULD TRY CAUSING ALL THE OTHER ERRORS AND JUST WATCH WHAT HAPPENS. ╘HAT'S A GOOD WAY TO LEARN. ╔N ┬ASIC 4 COMPUTERS THERE IS A ╥┼├╧╥─ COMMAND WHICH DOES THE SAME THING AS OUR LINE 510 (WITH ITS SOUBROUTINE IN LINE 560). ╙OME DISK BOOKS DISCUSS THE ╥┼├╧╥─ COMMAND ( AND THERE IS PLENTY TO DISCUSS ABOUT IT!) -  YOU HAVE TO BE ALERT AND KNOW THAT THE "╨" COMMAND IS THE SAME THING IN YOUR COMPUTER. ╔F SOMEBODY COULD ONLY TELL US HOW "╨" RELATES TO "╥ELATIVE"... THAT'S THE DISK'S BEST KEPT SECRET.
  79.  
  80. ***  ├╧╬╞╒╙╔╬╟ ═┴╘╘┼╥╙  ***             
  81.  
  82.      ─O NOT CONFUSE ╥┼╠┴╘╔╓┼ FILES WITH ╥┴╬─╧═ FILES. ╫HILE, INSIDE THE DISK, THEY ARE RELATED, THEY ARE DIFFERENT BEASTS. ├OMMODORE DISK MANUAL AND THE ╘┼╙╘/─┼═╧ DISKS HAVE A LONG SECTION ABOUT ╥┴╬─╧═ FILES. ╙TAY AWAY FROM ╥┴╬─╧═, ALSO CALLED ╒╙╥ OR ╒╙┼╥. ╘HEY ARE DIFFICULT TO WORK WITH AND ARE DIFFICULT TO RETAIN ON DISK. ╘HEY HAVE BEEN MADE OBSOLETE LONG AGO, THE VERY DAY THAT ├OMMODORE PROVIDED ╥┼╠┴╘╔╓┼ FILES.
  83.  
  84.      ╔F YOU NEED RANDOM ACCESS, STICK WITH ╥┼╠┴╘╔╓┼ FILES. ╘HEY DO MOST JOBS VERY WELL, BETTER THAN THE ╥┴╬─╧═ VARIETY.
  85.  
  86. ***  ╥╒═╧╥╙ ┴╬─ ┴ ╚╔╬╘  ***
  87.  
  88.      ╧N SOME 1541 DRIVES THE RELATIVE FILES DO NOT WORK TOO WELL. ╧N OTHERS, WHILE THE RELATIVE FILES MAY WORK FINE, THERE AREN'T ENOUGH SEQUENTIAL FILES TO SUPPORT COMPLEX FILING SCHEMES SUCH AS REQUIRED BY DATABASES (COLLECTIONS OF MANY FILES). ╔F YOU PLAN TO USE COMPLEX SCHEMES, GET A DUAL DRIVE, IT'S EASIER TO WORK WITH. ├OMMODORE MAY HAVE A FAST DRIVE OTHER THAN THE 1541. ═╙─ HAS A GOOD DUAL DRIVE. ├OMMODORE'S 8050 DRIVE IS EXCELLENT.
  89.